<?php
/**
 * Created by swagger_zxd.
 * User: zxd
 * Date: 2017/11/16
 * Time: 16:59
 */

namespace App\Services\Notice;


use App\Events\AdminLoggerEvent;
use App\Models\Admin\AdminUser;
use App\Models\Notice\NoticeInfo;
use App\Services\DataTableService;
use App\Services\FcAdminService;
use Illuminate\Support\Facades\Event;

class NoticeService extends FcAdminService
{
     use DataTableService;

     private $noticeInfo;

     private $adminUser;

     public function __construct(NoticeInfo $noticeInfo, AdminUser $adminUser)
     {
         //依赖注入model
         $this->noticeInfo=$noticeInfo;

         $this->adminUser=$adminUser;
     }
     /*
      *获取通知详情
      */
     public function noticeData($id)
     {
          return $this->noticeInfo->find($id);
     }

     /**
      * 添加通知
      * @param array $form_data
      * @return array
      */
     public function createNotice(array $form_data)
     {
          foreach ($form_data as $k => $v) {
               $this->noticeInfo->$k = $v;
          }

          $res=$this->noticeInfo->save();

          if (!$res) {
               return $this->handleError('添加失败');
          } else {
               Event::fire(new AdminLoggerEvent('管理员ID为'.$this->adminUser->id.'添加了一条通知，通知内容为:'.$this->noticeInfo->content.'，次数为'.$this->noticeInfo->times));

               //创建结果
               return $this->handleSuccess('添加成功');
          }


     }

     /**
      * 编辑通知
      * @param $id
      * @param array $form_data
      * @return array
      */
     public function editNotice($id, array $form_data){
          //1.验证修改数据是否存在
          $notice=$this->noticeData($id);

          if (empty($notice)) {
               return $this->handleError('该通知不存在');
          }

          //2.更新数据 如果数据需要做特殊处理 处理后再入库
//          dd($form_data);

          //3.更新数据
          $res=$this->noticeInfo->where(['id'=>$id])->update($form_data);

          if (!$res) {
               return $this->handleError('编辑失败！');
          } else {
               //触发日志
               Event::fire(new AdminLoggerEvent('修改了管理员[ ID :'.$this->adminUser->id.'修改了通知内容为:'.$form_data['content'].'，次数为'.$form_data['times'].']'));

               return $this->handleSuccess('添加成功');
          }
     }


     public function deleteNotice($id){
          //获取此数据
          $notice=$this->noticeData($id);
          //验证是否为空
          if (empty($notice)) {
               return $this->handleError('该通知不存在');
          }

          $res=$notice->delete();

          if (!$res) {
               $this->handleError('删除失败');
          } else {

               //触发事件
               Event::fire(new AdminLoggerEvent('管理员删除了 [ ID:'.$this->adminUser->id.',通知内容为:'.$notice->content.', 次数为:'.$notice->times.'的通知 ]'));

               return $this->handleSuccess('删除成功!');
          }

     }




}